package cn.bdqn.or.dao;

import cn.bdqn.or.pojo.Order;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;


public interface OrderMapper {
	Integer countByOrderNum(@Param("orderNum") Integer orderNum);

	/**
	 * 通过收获地址查询所有订单量
	 * @param address
	 * @return
	 */
	List<Order> selectByAddress(@Param("address") String address);

	/**
	 * 查询所有订单
	 * @return
	 */
	List<Order> queryAll();

	/**
	 * 通过产品类型查询
	 * @param type
	 * @return
	 */
	List<Order> selectByType(@Param("type") String type);

	/**
	 * 通过订单编号查询订单详细信息
	 * @param orderId
	 * @return
	 */
	List<Order> selectByOrderId(@Param("orderId") String orderId);

	/**
	 * 通过订单编号或者时间查询订单
	 * @param orderNum
	 * @param orderDate
	 * @return
	 */
	List<Order> selectByOrderIdOrOrderDate(@Param("orderNum") String orderNum, @Param("orderDate") Date orderDate);

	/**
	 * 点击发货修改发货状态,通过订单编号
	 * @param updatedIssuanceStatus
	 * @param orderId
	 * @return
	 */
	int updateIssuanceStatusByOrderId(@Param("updatedIssuanceStatus") Integer updatedIssuanceStatus, @Param("orderId") String orderId);

	/**
	 * 通过id删除订单，将所有状态改成3 ‘无
	 * @param updatedPayStatus
	 * @param updatedRefundStatus
	 * @param updatedIssuanceStatus
	 * @param updatedReceivingStatus
	 * @param orderId
	 * @return
	 */
	int updatePayStatusAndRefundStatusAndIssuanceStatusAndReceivingStatusByOrderId(@Param("updatedPayStatus") Integer updatedPayStatus, @Param("updatedRefundStatus") Integer updatedRefundStatus, @Param("updatedIssuanceStatus") Integer updatedIssuanceStatus, @Param("updatedReceivingStatus") Integer updatedReceivingStatus, @Param("orderId") String orderId);

	/**
	 *未退款
	 *已退款
	 * @param refundStatus
	 * @return
	 */
	List<Order> selectByRefundStatus(@Param("refundStatus") Integer refundStatus);

	// 交易总金额
	Double sumSumPrice();

	/**
	 * 添加数据
	 * @param list
	 * @return
	 */
	Integer addOrderDataOfDatasource(List<Order> list);
}